package br.com.hstar.client.quarto;

import java.util.Comparator;
import java.util.List;

import br.com.hstar.client.cliente.cliente.ClienteUI;
import br.com.hstar.client.util.KeyValue;

import com.google.gwt.user.client.rpc.IsSerializable;

public class QuartoUI implements IsSerializable, KeyValue, Comparator {
    
    //Constantes----------------------------------
    public static final Integer LIVRE   = new Integer(0);
    public static final Integer OCUPADO = new Integer(1);
    public static final Integer SUJO    = new Integer(2);
    
    //Atributos-----------------------------------
    private Long id;
	private Integer numero;
	private List formaspgto;
	private Integer formaEntrada;
	private ClienteUI cliente;
	private Integer situacao;
	private String dataAluguel;
	private String horaEntrada;
	private String horaSaida;
	private List produtosConsumidos;
	private Double valorConsumido;
	private String observacao;
    
    //Construtor padrao
    public QuartoUI() {
    	this.setSituacao(LIVRE);
    }
    
    public QuartoUI(Integer numero) {
    	this.setSituacao(LIVRE);
    	setNumero(numero);
    }

    private static final String[] columns = {
		"Id", 
		"Número"				
	};
    
    public Integer getSituacao() {
		return situacao;
	}

	public void setSituacao(Integer sit) {
		this.situacao = sit;
	}
    
    public Integer getNumero() {
        return numero;
    }
    public void setNumero(Integer numero) {
        this.numero = numero;
    }

	public String getDataAluguel() {
		return dataAluguel;
	}

	public void setDataAluguel(String dataAluguel) {
		this.dataAluguel = dataAluguel;
	}

	public String getHoraEntrada() {
		return horaEntrada;
	}

	public void setHoraEntrada(String horaEntrada) {
		this.horaEntrada = horaEntrada;
	}

	public String getHoraSaida() {
		return horaSaida;
	}

	public void setHoraSaida(String horaSaida) {
		this.horaSaida = horaSaida;
	}

	public Long getId() {
		return id;
	}

	public void setId(Long id) {
		this.id = id;
	}

	public List getProdutosConsumidos() {
		return produtosConsumidos;
	}

	public void setProdutosConsumidos(List produtosConsumidos) {
		this.produtosConsumidos = produtosConsumidos;
	}

	public Double getValorConsumido() {
		return valorConsumido;
	}

	public void setValorConsumido(Double valorConsumido) {
		this.valorConsumido = valorConsumido;
	}

	public String getObservacao() {
		return observacao;
	}

	public void setObservacao(String observacao) {
		this.observacao = observacao;
	}

	public ClienteUI getCliente() {
		return cliente;
	}

	public void setCliente(ClienteUI cliente) {
		this.cliente = cliente;
	}

	public Integer getFormaEntrada() {
		return formaEntrada;
	}

	public void setFormaEntrada(Integer formaEntrada) {
		this.formaEntrada = formaEntrada;
	}

	//Esse método é usado para passar os parametros desse
	//objeto para as listas.
	public String getValue(int position) {
		if(position == 0) {
			return getId().toString();
		} else if(position == 1) {
			return getNumero().toString();
		} else {
			return null;
		}
	}

	public Long getKey() {
		return getId();
	}
	
	public static String[] getColumns() {
		return columns;
	}

	//comparator impelementation
	public int compare(Object o1, Object o2) {
		if (o1 == null && o2 == null) {
            return 0;
        } else if (o1 == null) {
            return 1;
        } else if (o2 == null) {
            return -1;
        } 
		
		return ((QuartoUI)o1).getNumero().compareTo( ((QuartoUI)o2).getNumero() );
	}

	public List getFormaspgto() {
		return formaspgto;
	}

	public void setFormaspgto(List formaspgto) {
		this.formaspgto = formaspgto;
	}
    
}
